package com.sugon.entity;

import cn.hutool.core.date.DateUtil;
import com.sugon.consts.DevInspectInterval;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 特种设备-叉车台账实体
 * 表名 SPECIAL_DEV_FORK_TRUCK
 *
 * @author sugon
 * @date 2021-09-08 16:30:39
 */
@Data
public class SpecialDevForkTruckEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 使用部门的自编号或设备(使用)编号
     */
    private String selfCode;
    /**
     * 叉车自重
     */
    private Integer weight;
    /**
     * 正常、待报废、在用等
     */
    private String state;
    /**
     * 启用日期
     */
    private Date enableDate;
    /**
     * 生产商家ID
     */
    private String factory;
    /**
     * 注册代码
     */
    private String registCode;
    /**
     * 设备代码
     */
    private String devCode;
    /**
     * 备注
     */
    private String remark;
    /**
     * 最近一次更新用户
     */
    private String updateUser;
    /**
     * 最近一次更新时间
     */
    private Date gmtModified;
    /**
     * 创建用户
     */
    private String createUser;
    /**
     * 创建日期
     */
    private Date gmtCreate;
    /**
     * 最近一次检验周期
     */
    private Date latestInspectDate;
    /**
     * 检验周期，一般为月
     */
    private Integer inspectInterval;


    /**
     * 检验周期字符串格式，一般为月
     */
    private String inspectIntervalStr;

    public String getInspectIntervalStr() {
        return inspectInterval != null ? inspectInterval.toString() : "";
    }

    private String inspectIntervalDesc;

    public String getInspectIntervalDesc() {
        DevInspectInterval interval = DevInspectInterval.getByMonths(inspectInterval);
        return interval != null ? interval.getDesc() : null;
    }

    /**
     * 使用单位
     */
    private String userDept;
    /**
     * 使用地点
     */
    private String location;
    /**
     * 登记证代码
     */
    private String registCertCode;
    /**
     * 固定资产编号
     */
    private String fixedAssetCode;
    /**
     * 车辆牌照
     */
    private String licensePlate;
    /**
     * 产品编号/出厂编号
     */
    private String productNo;
    /**
     * 型号
     */
    private String model;
    /**
     * 设备名称
     */
    private String devName;
    /**
     * 主键
     */
    private String id;

    /**
     * 检验报告编号
     */
    private String inspectReportNo;

    /**
     * 设备编码，系统自动生成，区别于设备代码(线下使用的)
     */
    private String equipmentCode;

    /**********以下为VO字段，关联查询获取**********/

    /**
     * 检测机构ID
     */
    private String inspectUnit;

    /**
     * 检测机构名称
     */
    private String inspectUnitName;

    /**
     * 序号
     */
    private Integer idx;

    /**
     * 生产厂家名称
     */
    private String factoryName;

    /**
     * 使用单位名称
     */
    private String userDeptName;

    /**
     * 下次检测时间
     * 通过最近检验日期和检测周期得出
     */
    private Date nextInspectDate;

    public Date getNextInspectDate() {
        if (latestInspectDate != null && inspectInterval != null) {
            return DateUtil.offsetMonth(latestInspectDate, inspectInterval);
        }
        return null;
    }
}
